package org.example.springbootdemo;

import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author: Themberfue
 * @date: 2025/1/18 15:57
 * @description:
 */

@RequestMapping("/resp")
// ? @RestController 只能返回纯数据，不能返回页面等
@Controller // ? 使用Controller表示该类只能返回页面等，不能返回纯数据
public class RespController {
    /**
     * 返回页面
     */
    @RequestMapping("/r1")
    public String returnPage() {
        return "/index.html"; // * 必须要加 /，否则会解析失败
    }

    /**
     * 返回数据
     */
    @ResponseBody // ? 必须加上，才能在@Controller下返回数据
    @RequestMapping("/r2")
    public String returnData(){
        return "我是前端需要的数据";
    }

    @ResponseBody
    @RequestMapping("/r3")
    public String returnHTML() {
        // * 浏览器会默认解析标签，因为Content-type=text/html
        return "<h1>我是标题一</h1>";
    }

    @ResponseBody
    // * 通过produces将Content-type的值设置为text/plain
    @RequestMapping(value = "/r4", produces = "text/plain")
    public String returnText() {
        return "<h1>我是标题一</h1>";
    }

    // 返回JSON字符串
    @ResponseBody
    @RequestMapping("/r5")
    public UserInfo returnJson() {
        return new UserInfo("张三", 18, 0);
    }

    @ResponseBody
    @RequestMapping(value = "/r6")
    public UserInfo setStatus(HttpServletResponse response){
        // 设置响应状态码
        response.setStatus(404);
        return new UserInfo("zhangsan",1,1 );
    }


    @ResponseBody
    @RequestMapping(value = "/r7")
    public String setHeader(HttpServletResponse response){
        // 设置响应头键值对
        response.setHeader("myHeader", "myHeader");
        return "设置Header成功";
    }
}
